// 引入封装好的接口
import {
    userList,
    userCount
} from '../../../request/api'
const state = {
    adminList: [],
    total: 0, //总条数
    size: 2, //页面显示的条数
    page: 1 //具体传输那个页面
}

const getters = {
    // 获取管理员列表
    getAdminList(state) {
        return state.adminList
    },
    // 获取总条数
    getAdminCount(state) {
        return state.total
    },
    //把size传输到组件
    getSize(state) {
        return state.size
    }
}

const mutations = {
    // 列表
    ADMIN_list(state, payload) {
        state.adminList = payload
    },
    // 总条数
    ADMIN_COUNT(state, payload) {
        state.total = payload
    },
    // 修改page
    RES_PAGE(state, payload) {
        state.page = payload
    }
}

const actions = {
    //获取列表的行动
    getAdminListAction(context) {
        userList({
            size: context.state.size,
            page: context.state.page
        }).then(res => {
            console.log(res, '管理员列表');
            if (res.code == 200) {
                let list = res.list ? res.list : []
                /* 
                    由于删除非第一页，只有最后一条数据的时候出现了bug所以我们要用条件判断去控制
                    给page-1
                */
                if (context.state.page != 1 && list.length == 0) {
                    //重新去修改页码
                    context.dispatch('changePageAction', context.state.page - 1)
                }
                context.commit('ADMIN_list', list)
            }
        })
    },
    //封装一个获取总条数行动
    getAdminCountAction({
        commit
    }) {
        userCount()
            .then(res => {
                console.log(res, '总条数');
                if (res.code == 200) {
                    commit('ADMIN_COUNT', res.list[0].total)
                }
            })
    },
    //封装一个切换页码的行动
    changePageAction(context, payload) {
        console.log(context, 'context');
        //修改page 并且要重新调用列表行动
        context.commit('RES_PAGE', payload)
        context.dispatch('getAdminListAction')
    }
}

export default {
    state,
    getters,
    mutations,
    actions,
    namespaced: true
}